'use strict'
/**
 * WxUtil
 * 你是一段成熟的代码，要学会自己改bug  ----我是小尾巴
 */

import browserUtil from './BrowserUtil'
import httpUtil from './HttpUtil'

import wx from 'weixin-js-sdk'

const param = {
  // logo信息
  logo: 'https://bolecode-static.oss-cn-hangzhou.aliyuncs.com/img/scratch_share_logo.png',
  // 微信签名的请求地址
  action: {
    getWeChatShareSign: 'system/getWeChatShareSign'
  },
  // 需要分享的列表项:发送给朋友，分享到朋友圈，分享到QQ，分享到QQ空间
  jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline', 'onMenuShareQQ', 'onMenuShareQZone'],
  defaultConfig: {
    // 分享标题
    title: `伯乐码 | 青少年编程`,
    // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
    link: window.location.href.split('#')[0],
    // 分享描述
    desc: 'woshimiaoshu',
    // 分享图标
    imgUrl: this.logo,
    type: '',
    dataUrl: '',
    // 成功回调
    success: () => { alert('分享成功') },
    // 取消回调
    cancel: res => { console.log(res) }
  }
}

const method = {
  /**
   * 获取微信签名信息
   * @returns {Promise<any>}
   */
  getAppId: () => {
    return new Promise(resolve => {
      const url = encodeURIComponent(window.location.href.split('#')[0])
      httpUtil.xhrPost(window.selfVue, param.action.getWeChatShareSign, {url}, data => {
        resolve(data.data)
      })
    })
  }
}

/**
 * 初始化微信的信息
 * @param config
 * @returns {Promise<void>}
 */
export async function initWeChat (config = {}) {
  if (browserUtil.isWeChat()) {
    // 获取微信签名信息
    const weChatShareSign = await method.getAppId()
    wx.config({
      debug: false,
      ...weChatShareSign,
      jsApiList: param.jsApiList
    })
    // 处理验证失败的信息
    wx.error(res => {
      console.log(res)
      alert('验证失败返回的信息')
      // messageUtil.message.error('验证失败返回的信息')
    })
    const resultConfig = {
      ...param.defaultConfig,
      ...config
    }
    // 处理验证成功的信息
    wx.ready(() => {
      param.jsApiList.forEach(item => {
        wx[item](resultConfig)
      })
    })
  }
}
